﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using LCTMoodle.Models.DataModels;
using LCTMoodle.Models.ViewModels;
using LCTMoodle.Service;
using LCTMoodle.Helper;

namespace LCTMoodle.Controllers
{
    public class ChuDeController : Controller
    {
        #region Khoá Học - Chủ Đề
        /// <summary>
        /// KhoaHoc_ChuDe
        /// </summary>
        /// <returns>Trả về một PartialViewResult</returns>
        public PartialViewResult KhoaHoc_ChuDe()
        {
            List<ChuDeViewModel> chuDe = ChuDeService.layChuDe();

            return PartialView(chuDe);
        }
        #endregion Khoá Học - Chủ Đề

        #region Thêm Chủ Đề
        /// <summary>
        /// Thêm chủ đề
        /// </summary>
        /// <returns>Trả về một ActionResult</returns>
        public ActionResult ThemChuDe()
        {
            return View();
        }

        /// <summary>
        /// Xử lý thêm chủ đề
        /// </summary>
        /// <returns>Trả về một ActionResult </returns>
        public ActionResult XuLyThemChuDe(FormCollection form)
        {
            #region Kiểm tra đăng nhập
            if (!TienIch.daDangNhap())
            {
                //Thông báo
                TempData["ThongBao"] =
                    new string[] 
                    {
                        "Bạn chưa đăng nhập"
                    };
                return RedirectToAction("Index", "TrangChu");
            }
            #endregion Kiểm tra đăng nhập            

            //Kiểm tra dữ liệu nhập vào
            if (form["TenChuDe"] != "")
            {
                ChuDeDataModel chuDe = new ChuDeDataModel();
                chuDe.TenChuDe = form["TenChuDe"].ToString();
                chuDe.MaChuDeCha = (form["MaChuDeCha"] == null? 0 : Convert.ToInt16(form["MaChuDeCha"]));

                //Thêm chủ đề
                if (ChuDeService.themChuDe(chuDe) != 0)
                {
                    //Thông báo
                    TempData["ThongBao"] =
                        new string[] 
                    {
                        "Thêm chủ đề thành công",
                        "Tot"
                    };
                    return RedirectToAction("QuanLyChuDe", "ChuDe");
                }
                //Thông báo
                TempData["ThongBao"] =
                    new string[] 
                {
                    "Thêm chủ đề thất bại"
                };
                return RedirectToAction("ThemChuDe", "ChuDe");
            }
            //Thông báo
            TempData["ThongBao"] =
                new string[] 
                {
                    "Dữ liệu nhập chưa đủ"
                };
            return RedirectToAction("ThemChuDe", "ChuDe");
        }
        #endregion

        #region Quản lý chủ đề
        /// <summary>
        /// Quản lý chủ đề
        /// </summary>
        /// <returns>Trả về một ActionResult</returns>
        public ActionResult QuanLyChuDe()
        {
            #region Kiểm tra quyền
            //Kiểm tra đăng nhập
            if (!TienIch.daDangNhap())
            {
                TempData["ThongBao"] =
                    new string[] 
                    { 
                        "Bạn chưa đăng nhập"                    
                    };
                return RedirectToAction("Index", "TrangChu");
            }
            //Kiểm tra quyền quản lý chủ đề
            if (!(((NguoiDungViewModel)Session["NguoiDung"]).loaiNguoidung == "QuanLy"))
            {
                TempData["ThongBao"] =
                    new string[]
                    {
                        "Bạn không có quyền"
                    };
                return RedirectToAction("Index", "TrangChu");
            }
            #endregion Kiểm tra quyền

            return View();
        }

        /// <summary>
        /// Xử lý cập nhật chủ đề
        /// </summary>
        /// <param name="ma">Mã chủ đề</param>
        /// <param name="ten">Tên chủ đề</param>
        /// <returns>Thông báo thành công hoặc thất bại</returns>
        public ContentResult XuLyCapNhatChuDe(int maChuDe, string tenChuDe)
        {
            #region Kiểm tra quyền
            //Kiểm tra đăng nhập
            if (!TienIch.daDangNhap())
            {
                return Content("Chưa đăng nhập");
            }
            //Kiểm tra quyền quản lý chủ đề
            if (!(((NguoiDungViewModel)Session["NguoiDung"]).loaiNguoidung == "QuanLy"))
            {
                return Content("Không có quyền xoá chủ đề");
            }
            #endregion Kiểm tra quyền

            //Khai báo đối tượng chủ đề
            ChuDeDataModel chuDe = new ChuDeDataModel();
            //Kiểm tra ma, ten nhập vào có bị bỏ trống không
            //Nếu bị bỏ trống thì lấy lại chuDe cũ
            if (maChuDe != 0 && tenChuDe != "")
            {
                chuDe.Ma = maChuDe;
                chuDe.TenChuDe = tenChuDe;
                chuDe.MaChuDeCha = 0;
            }
            else
            {                
                return Content("Không cập nhật chủ đề");
            }

            if (ChuDeService.capNhatChuDe(chuDe))
            {
                return Content("OK");
            }
            return Content("Cập nhật chủ đề thất bại");
        }

        /// <summary>
        /// Xoá chủ đề
        /// </summary>
        /// <param name="ma"></param>
        /// <returns></returns>
        public ContentResult XuLyXoaChuDe(int ma)
        {
            #region Kiểm tra quyền
            //Kiểm tra đăng nhập
            if (!TienIch.daDangNhap())
            {                
                return Content("Chưa đăng nhập");
            }
            //Kiểm tra quyền quản lý chủ đề
            if (!(((NguoiDungViewModel)Session["NguoiDung"]).loaiNguoidung == "QuanLy"))
            {                
                return Content("Không có quyền xoá chủ đề");
            }
            #endregion Kiểm tra quyền
            
            //Xoá chủ đề
            if (ChuDeService.xoaChuDeTheoMaChuDe(ma))
            {
                return Content("OK");
            }
            else
            {
                return Content("Xoá chủ đề thất bại");
            }            
        }
        #endregion
    }
}
